(function(global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('underscore')) :
    typeof define === 'function' && define.amd ? define(['underscore'], factory) :
    global.gdutil = factory(_);
}(this, function(_) {
  'use strict';

  //尽量不要用

  return {
    /**
     * [ [ <‘font-style’> || <font-variant-css21> || <‘font-weight’> || <‘font-stretch’> ]? <‘font-size’> [ / <‘line-height’> ]? <‘font-family’> ] | caption | icon | menu | message-box | small-caption | status-bar
     * where 
     * <font-variant-css21> = [ normal | small-caps ]
     * @param  {[type]} p [description]
     * @return {[type]}   [description]
     */
    combineFont: function(p) {
      if (p.font) {
        return p.font;
      } else {
        return _.filter([
          p.fontStyle,
          p.fontVariant,
          p.fontWeight,
          p.fontStretch,
          p.fontSize ? (p.fontLineHeight ? p.fontSize + '/' + p.fontLineHeight : p.fontSize) : '12px',
          p.fontFamily ? p.fontFamily : 'sans-serif'
        ], function(param) {
          return param != undefined;
        }).join(' ');
      }
    },
    /**
     * 获取一个jquery对象的长宽和位置，包含滚动条的长度， getBoundingClientRect()得到的结果是
     * 不包含被滚动条隐藏起来的部分，它永远是相对于浏览器视区最左上角的偏移
     * @param  {jqueryDOM} $elem 
     * @return {Object} {width:xxx, height:xxx, left:xxx, top:xxx}
     */
    getRect: function($elem) {
      return _.extend({
        width: $elem.width(),
        height: $elem.height()
      }, $elem.offset());
    }
  }

}))
